Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
babel-register
Advanced tools
The babel-register package is a tool that allows you to compile ES6/ES7 code on the fly as you run your application. It hooks into Node's require system to automatically transpile files as they are loaded, making it easier to use modern JavaScript features without needing a separate build step.
On-the-fly Transpilation
This feature allows you to transpile ES6/ES7 code to ES5 on the fly. By requiring 'babel-register' at the beginning of your application, you can use modern JavaScript syntax in your Node.js projects without a separate build step.
require('babel-register')({
presets: ['env']
});
// Now you can require ES6/ES7 modules
const myModule = require('./myModule');
Custom Configuration
You can customize the Babel configuration used by babel-register. This allows you to specify presets and plugins to tailor the transpilation process to your needs.
require('babel-register')({
presets: ['env'],
plugins: ['transform-runtime']
});
// Now you can require ES6/ES7 modules with custom Babel configuration
const myModule = require('./myModule');
ts-node is a TypeScript execution environment and REPL for Node.js. It allows you to run TypeScript code directly without precompiling, similar to how babel-register works for JavaScript. While babel-register focuses on JavaScript, ts-node is specifically designed for TypeScript.
esm is a package that enables ES modules in Node.js. It allows you to use import/export syntax in Node.js applications without needing to transpile your code. Unlike babel-register, which transpiles code to ES5, esm focuses on providing native ES module support.
Sucrase is a super-fast alternative to Babel that focuses on compiling modern JavaScript syntax to a format that Node.js can understand. It is similar to babel-register in that it allows on-the-fly transpilation, but it is optimized for speed and supports a more limited set of transformations.
The require hook will bind itself to node's require and automatically compile files on the fly.
One of the ways you can use Babel is through the require hook. The require hook
will bind itself to node's require
and automatically compile files on the
fly. This is equivalent to CoffeeScript's
coffee-script/register.
npm install babel-register --save-dev
require("babel-register");
All subsequent files required by node with the extensions .es6
, .es
, .jsx
and .js
will be transformed by Babel.
Polyfill not included
You must include the polyfill separately when using features that require it, like generators.
node_modules
by defaultNOTE: By default all requires to node_modules
will be ignored. You can
override this by passing an ignore regex via:
require("babel-register")({
// This will override `node_modules` ignoring - you can alternatively pass
// an array of strings to be explicitly matched or a regex / glob
ignore: false
});
require("babel-register")({
// Optional ignore regex - if any filenames **do** match this regex then they
// aren't compiled.
ignore: /regex/,
// Ignore can also be specified as a function.
ignore: function(filename) {
if (filename === "/path/to/es6-file.js") {
return false;
} else {
return true;
}
},
// Optional only regex - if any filenames **don't** match this regex then they
// aren't compiled
only: /my_es6_folder/,
// Setting this will remove the currently hooked extensions of .es6, `.es`, `.jsx`
// and .js so you'll have to add them back if you want them to be used again.
extensions: [".es6", ".es", ".jsx", ".js"],
// Setting this to false will disable the cache.
cache: true
});
You can pass in all other options as well,
including plugins
and presets
. But note that the closest .babelrc
to each file still applies, and takes precedence over any options you pass in here.
By default babel-node
and babel-register
will save to a json cache in your
temporary directory.
This will heavily improve with the startup and compilation of your files. There are however scenarios where you want to change this behaviour and there are environment variables exposed to allow you to do this.
Specify a different cache location.
BABEL_CACHE_PATH=/foo/my-cache.json babel-node script.js
Disable the cache.
BABEL_DISABLE_CACHE=1 babel-node script.js
FAQs
babel require hook
The npm package babel-register receives a total of 2,972,172 weekly downloads. As such, babel-register popularity was classified as popular.
We found that babel-register demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.